package br.com.social.mobile.handler;

import java.util.Date;

import org.apache.log4j.Logger;

import br.com.social.mobile.dao.GpsDeviceDAO;
import br.com.social.mobile.entities.GpsDevice;
import br.com.social.mobile.exception.TrackerServiceException;
import br.com.social.mobile.rest.util.dto.GpsDeviceDto;


public class GpsDeviceHandler {
	
	private Logger logger = Logger.getLogger(GpsDeviceHandler.class);

	public void insertOrUpdate(GpsDeviceDto gpsDeviceDto) throws TrackerServiceException {
		
		try {
			GpsDeviceDAO gpsDeviceDAO = new GpsDeviceDAO();
			logger.info("Recupera gpsDevice by Imei");
			GpsDevice gpsDevice = gpsDeviceDAO.getByImei(gpsDeviceDto.getNuImei());
			
			logger.info("gpsDevice: " + gpsDevice);
			
			GpsDevice updGpsDevice = parseToEntity(gpsDeviceDto);
			logger.info("updGpsDevice: " + updGpsDevice);
			if (gpsDevice != null) {
				updGpsDevice.setId(gpsDevice.getId());
				gpsDeviceDAO.update(updGpsDevice);
			} else {
				gpsDeviceDAO.save(updGpsDevice);
			}
			
		} catch (TrackerServiceException e) {
			logger.error(e);
			throw new TrackerServiceException("Ocorreu um erro, tente novamente.");
		}
		
	}
	
	private GpsDevice parseToEntity(GpsDeviceDto gpsDeviceDto) {
		GpsDevice gpsDevice = new GpsDevice();
		
		gpsDevice.setDsDescription(gpsDeviceDto.getDsDescription());
		gpsDevice.setDsName(gpsDeviceDto.getDsName());
		gpsDevice.setDtInserted(new Date());
		gpsDevice.setId(gpsDeviceDto.getNuId());
		gpsDevice.setNuIdLine(gpsDeviceDto.getNuIdLine());
		gpsDevice.setNuIdProject(gpsDeviceDto.getNuIdProject());
		gpsDevice.setNuImei(gpsDeviceDto.getNuImei());
		logger.info("gpsDevice: " + gpsDevice);
		logger.info("gpsDeviceDto: " + gpsDeviceDto);
		return gpsDevice;
		
	}
	
}
